<?php


namespace app\admin\model;


use think\Model;

class ShopCheckWorkWarning extends Model
{

    protected $table = 'lg_shop_check_work_warning' ;

    protected $autoWriteTimestamp = true;

    //考勤预警,发送预警短信记录
    //短信模板：【久久金】【深圳99金总部一号】今日门店员工迟到，门店未正常营业
    //请求地址：http://www.99goldadmin.com/admin.html#/admin/cron_sms/shop_check_work_warning.html
    //请求地址：http://139.159.156.100/admin.html#/admin/cron_sms/shop_check_work_warning.html?p_num=1&state=3
    //目前只给门店管理人员发送短信   CronSmsTabShop
    public function shop_check_work_warning($id=0,$state=0){
        // status 状态：1为正常；2为异常 is_send 短信是否发送：1为待发送，2为已发送 sms_status 短信发送状态：1为待发送，2为发送成功，3为发送失败
        $map_str="status=2 and is_send=1";
        $data=input();
        if(isset($data['id'])&&$data['id']){  //指定ID发送短信
            $id=$data['id'];
        }
        if(isset($data['state'])&&$data['state']){ //判断是否有数据返回
            $state=$data['state'];
        }
        if($id){
            $map_str.=" and id=".$id;
        }
        $p_num=50;
        if(isset($data['p_num'])&&$data['p_num']){ //每次处理的数量
            $p_num=$data['p_num'];
        }
        $is_log=0;//是否生成日志记录
        if($state==3){
            $is_log=1;
        }
        $fields="id,shop_id";
        $list =  self::field($fields)->where($map_str)->order('id desc,sms_status asc')->limit($p_num)->select();
        $total_num =  self::where($map_str)->count();//待发送数量
        $msg="总量:".$total_num.";当前处理量：".count($list).";";
        $yes_num=0;//成功数量
        $not_num=0;//失败数量
        $not_msg=$yes_msg="";//成功信息
        if($list){
            foreach ($list as $k=>$v){
                $shop_id=$v['shop_id'];
                if($shop_id){
                    //门店管理员
                    $shop_admin_phone=ShopAdmin::where("find_in_set($shop_id,shop_id)")->column("phone");
                    //门店名称
                    $shop_name=Distributor::where("id=".$shop_id)->value("name");
                    if($shop_admin_phone&&$shop_name){
                        $shop_admin_phone=array_values(array_unique($shop_admin_phone));
                        // 阿里云 不同手机号码，相同短信内容发送，最大一个批次发送1000条
                        $phone=implode(',',$shop_admin_phone);
                        $sms_content="【".$shop_name."】今日门店员工迟到，门店未正常营业";//短信内容
                        $TemplateParam=['param'=>$sms_content];
                        //$aliYunSms=AliYunSmsModel::sendSms($phone,$TemplateParam);
                        $aliYunSms['code']=200;
                        if($aliYunSms&&isset($aliYunSms['code'])&&$aliYunSms['code']==200){
                            $map_u=[];
                            $map_u['is_send']=2;//短信是否发送：1为待发送，2为已发送
                            $map_u['sms_status']=2;// 短信发送状态：1为待发送，2为发送成功，3为发送失败
                            $map_u['send_time']=time();// 发送时间
                            $map_u['send_msg']="发送成功";// 发送时间
                            self::where("id=".$v['id'])->update($map_u);
                            $is_log=1;
                            $yes_num+=1;
                            $yes_msg.="ID=".$v['id'].",shop_id=".$v['shop_id'].",门店管理员号码[".$phone."],门店名称[".$shop_name."],短信发送成功,处理成功；";
                        }else{
                            $send_msg="短信发送失败";
                            $map_u=[];
                            $map_u['send_msg']=$send_msg;
                            $map_u['sms_status']=3;// 短信发送状态：1为待发送，2为发送成功，3为发送失败
                            self::where("id=".$v['id'])->update($map_u);
                            $not_num+=1;
                            $not_msg.="ID=".$v['id'].",shop_id=".$v['shop_id'].",门店管理员号码[".$phone."],门店名称[".$shop_name."],短信发送失败,处理失败；";
                        }
                    }else{
                        $send_msg="";
                        if($shop_admin_phone){
                            $shop_admin_phone=array_values(array_unique($shop_admin_phone));
                            // 阿里云 不同手机号码，相同短信内容发送，最大一个批次发送1000条
                            $phone=implode(',',$shop_admin_phone);
                        }else{
                            $send_msg.="暂无关联对应的店铺管理员，店铺名称[".$shop_name."]";
                            $phone="暂无关联门店管理员";
                        }
                        $map_u=[];
                        $map_u['send_msg']=$send_msg;
                        $map_u['sms_status']=3;// 短信发送状态：1为待发送，2为发送成功，3为发送失败
                        self::where("id=".$v['id'])->update($map_u);
                        $not_num+=1;
                        $not_msg.="ID=".$v['id'].",shop_id=".$v['shop_id'].",门店管理员号码[".$phone."],门店名称[".$shop_name."],处理失败；";
                    }
                }else{   //店铺ID为0
                    $send_msg="店铺ID参数错误，不能为空";
                    $map_u=[];
                    $map_u['send_msg']=$send_msg;
                    $map_u['sms_status']=3;// 短信发送状态：1为待发送，2为发送成功，3为发送失败
                    self::where("id=".$v['id'])->update($map_u);
                    $not_num+=1;
                    $not_msg.="ID=".$v['id'].",shop_id=".$v['shop_id'].",店铺ID为0,处理失败；";
                }
            }
        }else{
            $msg= "暂无短信发送";
        }
        //记录日志
        if($yes_num){
            $msg.="处理成功量：".$yes_num."；OK信息：".$yes_msg;
        }
        if($not_num){
            $msg.="处理失败量：".$not_num."；失败信息：".$not_msg;
        }
        if($state){
            echo $msg;
        }
        if($list&&$is_log){
            sysoplog('发送考勤预警短信定时任务', $msg);
        }
    }

}